//
//  main.swift
//  10.下标
//
//  Created by 左忠飞 on 2021/8/13.
//

import Foundation


//下标相信大家都很熟悉了，在绝大多数语言中使用下标来读写类似数组或者是字典这样的数据结 构的做法，似乎已经是业界标准。在 Swift 中， Array 和 Dictionary 当然也实现了下标读写

//如果我们向输入多个下标,去除数组中的对应的值,默认是不支持的
//下面我们来给Array扩展下标功能,接受一个下标数组,返回一组对应的值
extension Array {
    subscript(input:[Int]) -> ArraySlice<Element> {
        get {
            var result = ArraySlice<Element>()
            for i in input {
                assert(i < self.count,"Index out of range")
                result.append(self[i])
            }
            return result
        }
        
        set {
            for (index,i) in input.enumerated() {
                assert(i < self.count,"Index out of range")
                self[i] = newValue[index]
            }
        }
    }
}

var arr = [1,2,3,4,5]
print(arr[[0,2,4]])

arr[[0,2,3]] = [-1,-2,-3]
print(arr)
